package com.iplay.thezen.memento.betterEncapsulation;

/**
 * 内置类Memento全部是private的访问权限，也就是说除了发起人外，别人休想访问到， 那如果要产生关联关系又应如何处理呢？通过接口！
 * 别忘记了我们还有一个空接口是公共的 访问权限
 * @author dangwu
 * @since 2021/9/24 11:33 上午
 */
public class Originator {
    private String state = "";

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public IMemento createMemento(){
        return new Memento(this.state);
    }

    public void restoreMemento(IMemento memento){
        this.setState(((Memento)memento).getState());
    }

    private class Memento implements IMemento{
        private String state = "";

        private Memento(String state){
            this.state = state;
        }

        private String getState() {
            return state;
        }
    }
}
